Many computing applications require the use of geographic locations. For example, mapping programs need to know where a user is. Travel planning programs need to know the location for the endpoints of a trip, and perhaps the location of multiple waypoints between the endpoints.
As yet another example, “local search,” such as Google Local, has become more and more popular. Such local search adds a local component to ordinary search by taking advantage of a known (or at least suspected) location of the searcher. For example, a searcher who enters “furniture” as a search term and who has previously identified his or her zip code, may be provided with a sub-set of search results for businesses within or near that zip code, such as nearby furniture stores. The searcher may also be provided with appropriately targeted local advertising results along with the search results.
These systems generally need to produce relatively precise locations. For example, if a system is going to compute a trip path between two points, it should know those points fairly closely or else the user will be left to guess near each end of the trip. Such systems also generally need unambiguous locations. In other words, if they need to calculate a search for the area around some point, they need to know that they are using the appropriate point, and not some other point with a similar name or description hundreds of kilometers away.
At the same time, it is best if these systems do not demand such unambiguous input from users. Specifically, users will not feel good about a system that requires them to provide a precise location or address, without any typos and with perfect detail. Users certainly do not want to have to provided a latitude and longitude for a location, or provide Global Positioning Service (GPS) or other such coordinates.
Users also do not want to be forced to enter a single appropriate identifier for a location when there are multiple accurate identifiers (e.g., an address that may technically be described as located in either of two cities, or in a city and also a county; or an address on a road that has a number and an official name, and a common name). Moreover, users may want to enter queries without having to explicitly identify which text in the query represents a location, such as by a natural language query. In addition, it may be necessary to be able to associate content, such as web pages, with a location or locations, so as to be able to provide such content in response to a location-based query.
Therefore, there is a need for systems and methods that can generate an accurate computer-usable location identifier from a user-provided human-usable location identifier. There is also a need for systems and methods that can extract an address from a provided query, web page, or other text, to create a computer-usable location identifier. Also, in certain areas such as Japan, human-usable standards for identifying locations can vary widely in syntax and style, making such a conversion especially difficult. Thus, there is a particular need for systems and methods that can generate computer-usable location identifiers even in areas having particularly ambiguous human-usable location identifiers.